/*
 * Copyright 2021 Huawei Technologies Co., Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package models

// CurrentTime ntp current time record
type CurrentTime struct {
	Seconds          int    `json:"seconds"`
	NanoSeconds      int    `json:"nanoSeconds"`
	TimeSourceStatus string `json:"timeSourceStatus"`
}

// TimingCaps ntp timing capabilities record
type TimingCaps struct {
	TimeStamp  NtpTimeStamp `json:"timeStamp"`
	NtpServers []NtpServers `json:"ntpServers"`
	//PtpMasters []PtpMasters `json:"ptpMasters"` //not supported
}

// NtpTimeStamp for timestamp record
type NtpTimeStamp struct {
	Seconds     int `json:"seconds"`
	NanoSeconds int `json:"nanoSeconds"`
}

// NtpServers for NTP server list
type NtpServers struct {
	NtpServerAddrType    string `json:"ntpServerAddrType"`
	NtpServerAddr        string `json:"ntpServerAddr"`
	MinPollingInterval   int    `json:"minPollingInterval"`
	MaxPollingInterval   int    `json:"maxPollingInterval"`
	LocalPriority        int    `json:"localPriority"`
	AuthenticationOption string `json:"authenticationOption"`
	AuthenticationKeyNum int    `json:"authenticationKeyNum"`
}

// PtpMasters for PTP master list: not supporting
type PtpMasters struct {
	PtpMasterIPAddress     string `json:"ptpMasterIpAddress"`
	PtpMasterLocalPriority int    `json:"ptpMasterLocalPriority"`
	DelayReqMaxRate        int    `json:"delayReqMaxRate"`
}
